import os
import json

# 假设所有的JSON文件存储在 'json_dir' 目录中
json_dir = r'E:\postgraduate\大论文数据集\seg_labels'
output_dir = r'E:\postgraduate\大论文数据集\seg_labels_changes'
txt_dir = r'E:\CODE\PYQT_4.0\OUTPUT\IQI'

# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)

# 获取所有 JSON 文件
json_files = [f for f in os.listdir(json_dir) if f.endswith('.json')]

for json_file in json_files:
    # 构建完整的文件路径
    file_path = os.path.join(json_dir, json_file)

    # 读取 JSON 文件
    with open(file_path, 'r', encoding='utf-8') as f:
        data = json.load(f)

    # 获取对应的 txt 文件名（假设 txt 文件名与 json 文件名一致）
    txt_file = os.path.join(txt_dir, f'{os.path.splitext(json_file)[0]}.txt')

    # 读取 xx1 值
    if os.path.exists(txt_file):
        with open(txt_file, 'r') as f:
            xx1 = float(f.read().strip())
    else:
        # 如果没有对应的 txt 文件，则跳过该文件
        print(f"Warning: {txt_file} not found. Skipping {json_file}.")
        continue

    # 遍历所有形状并修改坐标点
    for shape in data['shapes']:
        new_points = []
        for point in shape['points']:
            new_x = point[0] - xx1
            new_y = point[1]  # 如果只需要减去 x 坐标的值，不修改 y 坐标
            new_points.append([new_x, new_y])

        # 更新形状的坐标点
        shape['points'] = new_points

    # 构建输出文件路径
    output_path = os.path.join(output_dir, json_file)

    # 保存修改后的 JSON 文件
    with open(output_path, 'w', encoding='utf-8') as f:
        json.dump(data, f, indent=4, ensure_ascii=False)

print("批量修改完成！")